はじめに
この記事では、InstanaでLinux上動作しているOpenRestyのトレーシングの有効化のセットアップについて説明します。
対象とする読者
システム管理者や開発者で、OpenRestyのパフォーマンス監視に興味がある方々。
ゴール
AWS EC2のAmazon Linux 2上にInstanaでOpenRestyの分散トレースを収集できること。
前提条件
- Linuxが搭載された環境
- OpenRestyの基本的な知識
アーキテクチャ
手を動かす
1. OpenRestyのインストール:
下記のコマンドでOpenRestyのダウンロードとインストールを行います。
$ wget https://openresty.org/package/amazon/openresty.repo
$ sudo mv openresty.repo /etc/yum.repos.d/
$ sudo vim /etc/yum.repos.d/openresty.repo
##change the baseurl tag content value of "$releasever" to "latest",the changed as follow:
baseurl=https://openresty.org/package/amazon/latest/$basearch
$ sudo yum check-update
$ sudo yum install -y openresty
$ sudo /sbin/chkconfig openresty on
$ sudo systemctl start openresty
### Open Restyのステータスを確認する ###
$ sudo systemctl status openresty
2. Instana Agentのインストール:
Instana Agentのデプロイ画面から、Linux-->「自動インストール(ワンライナー)」画面で下記のようなコマンドをコピーして、実行します。
$ curl -o setup_agent.sh https://setup.instana.io/agent && chmod 700 ./setup_agent.sh && sudo ./setup_agent.sh -a uXXXXXXXQ -d uYYYYYYYYYQ -t dynamic -e ingress-orange-saas.instana.io:443 -s -y
### Instanaサービスの確認 ###
$ sudo ps aux | grep instana
$ sudo systemctl status instana-agent.service
3. Instana OpenResty Tracing Moduleのダウンロードと設定:
3.1 Tracing Moduleをダウンロードし、適切なフォルダに配置します。
### 正しいAgent keyを下記のPassword部分に設定する ###
### URLは下記の参考URL 1.部分で正しいURLを設定する ###
$ wget --user _ --password XXXAgent_KeyXXXXXX https://artifact-public.instana.io/artifactory/shared/com/instana/nginx_tracing/1.8.2/linux-amd64-glibc-openresty-1.21.4_compat.zip
$ unzip linux-amd64-glibc-openresty-1.21.4_compat.zip
$ sudo mkdir /usr/local/openresty/nginx/modules
$ sudo cp /home/ec2-user/*.so /usr/local/openresty/nginx/modules
3.2 新規:/etc/instana-config.json
注意:JSON Formatなので、各Elementの後ろに "#"を取り除く必要があります
{
"service": "openrestytracinglinux2",
"agent_host": “127.0.0.1”,
"agent_port": 42699,
"max_buffered_spans": 1000
}
4. nginx.confの設定
/usr/local/openresty/nginx/conf/nginx.conf にmetrics及びtracing有効化を設定する
……
load_module modules/glibc-openresty-1.21.4-ngx_http_ot_module_compat.so;
env INSTANA_SERVICE_NAME;
env INSTANA_AGENT_HOST;
env INSTANA_AGENT_PORT;
env INSTANA_MAX_BUFFERED_SPANS;
env INSTANA_DEV;
http {
……
opentracing_load_tracer /usr/local/openresty/nginx/modules/glibc-libinstana_sensor.so /etc/instana-config.json;
opentracing_propagate_context;
log_subrequest on;
upstream backend {
server 127.0.0.1:5000;
}
server {
location / {
proxy_set_header X-AWESOME-HEADER "openresty_tracing_is_awesome";
opentracing_propagate_context;
proxy_pass http://127.0.0.1:5000;
}
.....
### OpenResty Metrics収集するため ####
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # Or the Remote IP of the Instana Host Agent
deny all;
}
…….
5. 動作確認
下記のテクノロジーを利用して、一応ローカルにFlask Frameworkベースのpython web サービスを起動して(http://127.0.0.1:5000)、PC Browserからアクセスして、Instanaのダッシュボードでメトリクスとトレースを表示されることを確認します。
Python3.7.16
Flask Framework
python-sensor@v2.0.5
おわりに
InstanaのOpenResty Tracingは、Webアプリケーションのパフォーマンス監視において非常に重要ので、ぜひ一度お試しいただければと思います。