InstanaでOpenRestyのトレーシングの有効化を試してみる

## はじめに
この記事では、InstanaでLinux上動作しているOpenRestyのトレーシングの有効化のセットアップについて説明します。

## 対象とする読者
システム管理者や開発者で、OpenRestyのパフォーマンス監視に興味がある方々。

## ゴール
AWS EC2のAmazon Linux 2上にInstanaでOpenRestyの分散トレースを収集できること。

## 前提条件
* Linuxが搭載された環境
* OpenRestyの基本的な知識

## アーキテクチャ
![Screenshot 2023-12-21 at 18.25.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/4c08be56-3aaf-da9a-7acd-74f94284e9a6.png)

## 手を動かす
### 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

![Screenshot 2023-12-21 at 19.08.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/89c66d32-1a74-89c3-193f-3e392cb1469f.png)

![Screenshot 2023-12-21 at 19.08.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/74812a9a-41f4-3866-1ba5-450a0b89c29a.png)

![Screenshot 2023-12-21 at 19.09.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/e3555861-6098-4ae4-4079-654b4639c492.png)

![Screenshot 2023-12-21 at 19.09.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/9c5f177a-3251-c765-8e0c-d27f4a1f228a.png)

![Screenshot 2023-12-21 at 19.09.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/ebc2b037-9961-fe96-4050-6353a1856bce.png)

![Screenshot 2023-12-21 at 19.09.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629252/d8c0cee7-505a-7f27-3af2-a97c90c9120b.png)



## おわりに
InstanaのOpenResty Tracingは、Webアプリケーションのパフォーマンス監視において非常に重要ので、ぜひ一度お試しいただければと思います。

## 参考URL：
1. [NGINX Distributed Tracing Binaries](https://www.ibm.com/docs/ja/instana-observability/current?topic=nginx-distributed-tracing-binaries)
2. [Monitoring NGINX](https://www.ibm.com/docs/ja/instana-observability/current?topic=technologies-monitoring-nginx)
3. [Supported NGINX versions and platforms](https://www.ibm.com/docs/ja/instana-observability/current?topic=nginx-supported-versions-platforms)