1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ApplibotAdvent Calendar 2022

Day 8

curlがして結果を見たいだけのgoを書く時に役立つTips

Posted at

はじめに

こちらは「Applibot Advent Calendar 2022」8日目の記事になります.

概要

アプリボットでSREをやっています。
SREといいつつ、アプリケーションコードを書いているわけではないは恥ずかしいところですが、
社内プロジェクトでのgo言語採用も増えたこともあり、自身でも軽くスクリプトを書く際にもシェルスクリプト中心からgo言語へシフトしています。

今回はcurlを使ったスクリプトを作成したい時に便利だった、PostmanのCode snippet機能の紹介をさせていただきます。

ユースケース

弊社ではモニタリングを全てdatadogへ寄せています。
その中でlogsの集計結果をAPIから取得し、レポート的なのを手元で作成しようとした際の流れになります。

1.datadogのログ検索結果をAPIで取得

以下のようにログでリストを出しているが、その結果をAPIで取得したい。
SDK使ってという正攻法もあるが、一番簡単に結果取得できるのはこの方法。

スクリーンショット_2022-12-08_2_15_53-2.png

以下のようにDD_API_KEYDD_APP_KEYを設定すれば叩けるcurlコマンドをだしてくれる。
クエリもそのまま出してくれるので分かりやすくて嬉しい。

curl -X POST "https://api.datadoghq.com/api/v2/logs/analytics/aggregate" -H "Content-Type: application/json" -H "DD-API-KEY: ${DD_API_KEY}" -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" -d @- << EOF
{"compute":[{"metric":"count","aggregation":"count","type":"total"}],"filter":{"query":"service:(fluentd OR game) @table:log_access   @log.path:\"/api/hoge\"","from":1669828193155,"to":1670432993155,"indexes":["*"]},"group_by":[{"facet":"@environment","limit":100,"sort":{"metric":"count","aggregation":"count","order":"desc","type":"measure"}}]}
EOF

↑を実行すると、以下のようなjsonのレスポンスが返ってくる。

{
    "meta": {
        "elapsed": 5,
        "request_id": "*****",
        "status": "done"
    },
    "data": {
        "buckets": [
            {
                "computes": {
                    "c0": 15
                },
                "by": {
                    "@environment": "dev**"
                }
            },
            〜 中略 〜
            {
                "computes": {
                    "c0": 1
                },
                "by": {
                    "@environment": "dev**"
                }
            }
        ]
    }
}

この結果が取れればやりたいことはできそう。
bashでこのまま書けばサクッとできそうだけど、goでやるとnet/httpあたりだっけ・・・。
さてどうしようか、となったところ素敵なツールがありました。

2. Postmanでgo言語に変換

Postmanというツールを使用します。

What is Postman?
Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster.

弊社でもAPIテストツールとして普段から重宝しています。
今回はPostmanのCode snippet機能を使用します。

まずAPIを登録。
datadogからCopy as cURLで取得したコマンドを見てみます。

curl -X POST "https://api.datadoghq.com/api/v2/logs/analytics/aggregate"
-H "Content-Type: application/json"
-H "DD-API-KEY: ${DD_API_KEY}"
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}"
-d @- << EOF
{"compute":[{"metric":"count","aggregation":"count","type":"total"}],"filter":{"query":"service:(fluentd OR game) @table:log_access   @log.path:\"/api/hoge\"","from":1669828193155,"to":1670432993155,"indexes":["*"]},"group_by":[{"facet":"@environment","limit":100,"sort":{"metric":"count","aggregation":"count","order":"desc","type":"measure"}}]}
EOF

これをpostmanへ登録すると以下のようになります。

Headersタブに-Hオプションで指定しているヘッダーの登録(DD-API-KEY、DD-APPLICATION-KEYのVALUEには直接キーを入れてます)
スクリーンショット_2022-12-08_3_34_30.png

Bodyタブに-dオプションの部分を入れる。
スクリーンショット_2022-12-08_3_34_52.png

Sendボタンを押して結果が返って来ればOK。
スクリーンショット_2022-12-08_3_52_57-2.png

Code snippetボタンを押すと以下のようにウィンドウが現れる。
※今回はGoを選択していますが、様々な言語、フレームワークでの選択が可能
スクリーンショット_2022-12-08_4_02_04.png

一瞬でgoのコードが出来上がってしまいました。

まとめ

軽いスクリプトを作る時、〇〇でのやり方はわかるけど、〇〇だとどう書くんだっけ・・・というのはあるあるかと思いますが、こういった機能でサクッと出せるのはとても助かる場面は多いのではないでしょうか。
最近話題のChatGPTでも、これ〇〇言語だとどう書くの?と聞いたら答えてくれる時代なので、いろいろなツールを駆使しつつ腕を磨いていけたらと思います。

以上,「Applibot Advent Calendar 2022」 8日目の記事でした.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?