Skip to content

Commit 12a1b2d

Browse files
committed
elastiwatch: use opensearch package
1 parent 012073f commit 12a1b2d

File tree

4 files changed

+45
-47
lines changed

4 files changed

+45
-47
lines changed

elastiwatch/elastiwatch/logs.go

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import (
88

99
"github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1"
1010
"github.com/keybase/managed-bots/base"
11-
"github.com/olivere/elastic"
11+
"github.com/opensearch-project/opensearch-go/v4/opensearchapi"
1212
)
1313

1414
type LogWatch struct {
1515
*base.DebugOutput
1616
db *DB
17-
cli *elastic.Client
17+
cli *opensearchapi.Client
1818
index, email string
1919
entries []*entry
2020
emailer base.Emailer
@@ -26,7 +26,7 @@ type LogWatch struct {
2626
peekCh chan struct{}
2727
}
2828

29-
func NewLogWatch(cli *elastic.Client, db *DB, index, email string, emailer base.Emailer,
29+
func NewLogWatch(cli *opensearchapi.Client, db *DB, index, email string, emailer base.Emailer,
3030
alertConvID, emailConvID chat1.ConvIDStr, debugConfig *base.ChatDebugOutputConfig) *LogWatch {
3131
return &LogWatch{
3232
DebugOutput: base.NewDebugOutput("LogWatch", debugConfig),
@@ -166,27 +166,25 @@ func (l *LogWatch) generateAndSend(entries []*entry) {
166166
}
167167

168168
func (l *LogWatch) runOnce() {
169-
query := elastic.NewBoolQuery().
170-
Must(elastic.NewRangeQuery("@timestamp").
171-
From(time.Now().Add(-time.Minute)).
172-
To(time.Now())).
173-
MustNot(elastic.NewTermQuery("severity", "debug"))
174-
res, err := l.cli.Search().
175-
Index(l.index).
176-
Query(query).
177-
Pretty(true).
178-
From(0).Size(10000).
179-
Do(context.Background())
169+
res, err := l.cli.Search(context.Background(), &opensearchapi.SearchReq{
170+
Indices: []string{l.index},
171+
Params: opensearchapi.SearchParams{
172+
Query: `NOT severity:debug AND @timestamp: [now-1m TO now]`,
173+
Sort: []string{"@timestamp:desc"},
174+
Size: opensearchapi.ToPointer(10000),
175+
Pretty: true,
176+
},
177+
})
180178
if err != nil {
181179
l.Debug("failed to run Elasticsearch query: %s", err)
182180
return
183181
}
184182

185183
var entries []*entry
186-
if res.TotalHits() > 0 {
187-
l.Debug("query hits: %d", res.TotalHits())
184+
if res.Hits.Total.Value > 0 {
185+
l.Debug("query hits: %d", res.Hits.Total.Value)
188186
for _, hit := range res.Hits.Hits {
189-
entry, err := newEntry(*hit.Source)
187+
entry, err := newEntry(hit.Source)
190188
if err != nil {
191189
l.Errorf("failed to unmarshal log entry: %s", err)
192190
continue
@@ -196,7 +194,6 @@ func (l *LogWatch) runOnce() {
196194
} else {
197195
l.Debug("no query hits, doing nothing")
198196
}
199-
200197
l.addAndCheckForSend(entries)
201198
}
202199

elastiwatch/main.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,15 @@ import (
44
"database/sql"
55
"flag"
66
"fmt"
7-
"net/http"
87
"os"
98

10-
"github.com/aws/aws-sdk-go/aws/defaults"
119
_ "github.com/go-sql-driver/mysql"
1210
"github.com/keybase/go-keybase-chat-bot/kbchat"
1311
"github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1"
1412
"github.com/keybase/managed-bots/base"
1513
"github.com/keybase/managed-bots/elastiwatch/elastiwatch"
16-
"github.com/olivere/elastic"
17-
elaws "github.com/olivere/elastic/aws/v4"
14+
"github.com/opensearch-project/opensearch-go/v4"
15+
"github.com/opensearch-project/opensearch-go/v4/opensearchapi"
1816
"golang.org/x/sync/errgroup"
1917
)
2018

@@ -120,7 +118,6 @@ func (s *BotServer) Go() (err error) {
120118
db := elastiwatch.NewDB(sdb)
121119
s.Debug("Connect to Elasticsearch at %s", s.opts.ESAddress)
122120
var emailer base.Emailer
123-
var httpClient *http.Client
124121
emailer = base.DummyEmailer{}
125122
debugConfig := base.NewChatDebugOutputConfig(s.kbc, s.opts.ErrReportConv)
126123
stats, err := base.NewStatsRegistry(debugConfig, s.opts.StathatEZKey)
@@ -129,14 +126,15 @@ func (s *BotServer) Go() (err error) {
129126
}
130127
if s.opts.AWSOpts != nil {
131128
s.Debug("Using AWS HTTP client: region: %s", s.opts.AWSOpts.AWSRegion)
132-
httpClient = elaws.NewV4SigningClient(defaults.Get().Config.Credentials, s.opts.AWSOpts.AWSRegion)
133129
emailer = base.NewSESEmailer(s.opts.SenderEmail, s.opts.AWSOpts.AWSRegion, debugConfig)
134130
}
135-
cli, err := elastic.NewClient(
136-
elastic.SetURL(s.opts.ESAddress),
137-
elastic.SetSniff(false),
138-
elastic.SetHealthcheck(false),
139-
elastic.SetHttpClient(httpClient),
131+
132+
cli, err := opensearchapi.NewClient(
133+
opensearchapi.Config{
134+
Client: opensearch.Config{
135+
Addresses: []string{s.opts.ESAddress},
136+
},
137+
},
140138
)
141139
if err != nil {
142140
s.Errorf("unable to connect to Elasticsearch: %s", err)

go.mod

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ go 1.23
55
toolchain go1.23.4
66

77
require (
8-
github.com/aws/aws-sdk-go v1.28.1
8+
github.com/aws/aws-sdk-go v1.55.7
99
github.com/bradleyfalzon/ghinstallation v1.1.0
1010
github.com/go-sql-driver/mysql v1.8.1
1111
github.com/google/go-github/v31 v31.0.0
1212
github.com/gorilla/mux v1.7.3
1313
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
1414
github.com/keybase/go-codec v0.0.0-20180928230036-164397562123
1515
github.com/keybase/go-keybase-chat-bot v0.0.0-20250106203511-859265729a56
16-
github.com/olivere/elastic v6.2.27+incompatible
16+
github.com/opensearch-project/opensearch-go/v4 v4.5.0
1717
github.com/stathat/go v1.0.0
1818
github.com/stretchr/testify v1.10.0
1919
github.com/xanzy/go-gitlab v0.29.0
@@ -32,19 +32,16 @@ require (
3232
github.com/davecgh/go-spew v1.1.1 // indirect
3333
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
3434
github.com/didip/tollbooth/v7 v7.0.1
35-
github.com/fortytw2/leaktest v1.3.0 // indirect
3635
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect
3736
github.com/golang/protobuf v1.3.5 // indirect
3837
github.com/google/go-github/v28 v28.1.1 // indirect
3938
github.com/google/go-querystring v1.0.0 // indirect
4039
github.com/googleapis/gax-go/v2 v2.0.5 // indirect
4140
github.com/hashicorp/go-cleanhttp v0.5.1 // indirect
4241
github.com/hashicorp/go-retryablehttp v0.6.4 // indirect
43-
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af // indirect
42+
github.com/jmespath/go-jmespath v0.4.0 // indirect
4443
github.com/kr/text v0.2.0 // indirect
45-
github.com/mailru/easyjson v0.7.0 // indirect
4644
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
47-
github.com/pkg/errors v0.9.1 // indirect
4845
github.com/pmezard/go-difflib v1.0.0 // indirect
4946
go.opencensus.io v0.22.1 // indirect
5047
golang.org/x/crypto v0.1.0 // indirect

go.sum

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSR
55
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
66
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
77
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
8-
github.com/aws/aws-sdk-go v1.28.1 h1:aWBD5EJrmGFuHFn9ZdaHqWWZGZYQ5Gzb3j9G0RppLpY=
9-
github.com/aws/aws-sdk-go v1.28.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
8+
github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE=
9+
github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
1010
github.com/bradleyfalzon/ghinstallation v1.1.0 h1:mwazVinJU0mPyLxIcdtJzu4DhWXFO5lMsWhKyFRIwFk=
1111
github.com/bradleyfalzon/ghinstallation v1.1.0/go.mod h1:p7iD8KytOOKg2wCqbwvJlq4JGpYMjwjkiqdyUqOIHLI=
1212
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
@@ -18,8 +18,6 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumC
1818
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
1919
github.com/didip/tollbooth/v7 v7.0.1 h1:TkT4sBKoQoHQFPf7blQ54iHrZiTDnr8TceU+MulVAog=
2020
github.com/didip/tollbooth/v7 v7.0.1/go.mod h1:VZhDSGl5bDSPj4wPsih3PFa4Uh9Ghv8hgacaTm5PRT4=
21-
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
22-
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
2321
github.com/go-pkgz/expirable-cache v0.1.0 h1:3bw0m8vlTK8qlwz5KXuygNBTkiKRTPrAGXU0Ej2AC1g=
2422
github.com/go-pkgz/expirable-cache v0.1.0/go.mod h1:GTrEl0X+q0mPNqN6dtcQXksACnzCBQ5k/k1SwXJsZKs=
2523
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
@@ -61,8 +59,10 @@ github.com/hashicorp/go-retryablehttp v0.6.4 h1:BbgctKO892xEyOXnGiaAwIoSq1QZ/SS4
6159
github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
6260
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
6361
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
64-
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
65-
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
62+
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
63+
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
64+
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
65+
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
6666
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
6767
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
6868
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
@@ -74,14 +74,10 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
7474
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
7575
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
7676
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
77-
github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM=
78-
github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
7977
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
8078
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
81-
github.com/olivere/elastic v6.2.27+incompatible h1:c57kY8PF/J6Iz2ATxHQkWFNkYyKDlEZr6hl/O5ZFNvQ=
82-
github.com/olivere/elastic v6.2.27+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8=
83-
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
84-
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
79+
github.com/opensearch-project/opensearch-go/v4 v4.5.0 h1:26XckmmF6MhlXt91Bu1yY6R51jy1Ns/C3XgIfvyeTRo=
80+
github.com/opensearch-project/opensearch-go/v4 v4.5.0/go.mod h1:VmFc7dqOEM3ZtLhrpleOzeq+cqUgNabqQG5gX0xId64=
8581
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
8682
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
8783
github.com/stathat/go v1.0.0 h1:HFIS5YkyaI6tXu7JXIRRZBLRvYstdNZm034zcCeaybI=
@@ -92,6 +88,16 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
9288
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
9389
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
9490
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
91+
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
92+
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
93+
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
94+
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
95+
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
96+
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
97+
github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
98+
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
99+
github.com/wI2L/jsondiff v0.7.0 h1:1lH1G37GhBPqCfp/lrs91rf/2j3DktX6qYAKZkLuCQQ=
100+
github.com/wI2L/jsondiff v0.7.0/go.mod h1:KAEIojdQq66oJiHhDyQez2x+sRit0vIzC9KeK0yizxM=
95101
github.com/xanzy/go-gitlab v0.29.0 h1:9tMvAkG746eIlzcdpnRgpcKPA1woUDmldMIjR/E5OWM=
96102
github.com/xanzy/go-gitlab v0.29.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug=
97103
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=

0 commit comments

Comments
 (0)