IK.AM


Observability > Wavefront

Wavefront ProxyをRocky Linuxにインストールするメモ

Created on Wed Jun 05 2024 • Last Updated on Wed Jun 05 2024N/A Views

🏷️ OrbStack | Wavefront | Tanzu | Telegraf | Rocky

Wavefront ProxyをRocky Linuxにインストールします。

この記事ではRocky Linux環境として、OrbStackLinux Machineを使用します。

目次

Linux Machineの作成

orb create -a amd64 rocky:8 wf-proxy

シェルにアクセスします。

orb shell -m wf-proxy

作業に使用するCLIをインストールします。

sudo yum update -y && sudo yum install wget less vim jq -y

JDKのインストール

Java 11が推奨のようです。BellsoftのLiberica JDKをyumでインストールします。

echo | sudo tee /etc/yum.repos.d/bellsoft.repo > /dev/null << EOF
[BELLSOFT]
name=BELLSOFT Repository
baseurl=https://yum.bell-sw.com
enabled=1
gpgcheck=1
gpgkey=https://download.bell-sw.com/pki/GPG-KEY-bellsoft
priority=1
EOF

sudo yum update
sudo yum install bellsoft-java11 -y
$ java -version
openjdk version "11.0.23" 2024-04-16 LTS
OpenJDK Runtime Environment (build 11.0.23+12-LTS)
OpenJDK 64-Bit Server VM (build 11.0.23+12-LTS, mixed mode, sharing)

Wavefront Proxyのインストール

https://docs.wavefront.com/proxies_manual_install.html を参考に、yumでインストールします。

curl -s https://packagecloud.io/install/repositories/wavefront/proxy/script.rpm.sh | sudo bash
sudo yum install wavefront-proxy -y

/etc/wavefront/wavefront-proxy/wavefront.confにWavefront Proxyの設定を行います。

WAVEFRONT_URLと、API Tokenを設定します。OTLP (OpenTelemetry Protocol)でも受信できるようにしておきます。

WAVEFRONT_URL=https://<tanent_id>.wavefront.com/api
WAVEFRONT_TOKEN=*******
WAVEFRONT_PROXY_NAME=${HOSTNAME}

sudo sed -i.bak \
  -e "s|server=SERVER_URL_HERE|server=${WAVEFRONT_URL}|" \
  -e "s|#proxyname=my.proxy.name.com|proxyname=${WAVEFRONT_PROXY_NAME}|" \
  -e "s|#token=WF_TOKEN_HERE|token=${WAVEFRONT_TOKEN}|" \
  -e "s|#otlpGrpcListenerPorts=4317|otlpGrpcListenerPorts=4317|" \
  -e "s|#otlpHttpListenerPorts=4318|otlpHttpListenerPorts=4318|" \
  /etc/wavefront/wavefront-proxy/wavefront.conf

Wavefront Proxyを起動します。

sudo service wavefront-proxy start

StatusがrunningになっていればOKです。

$ sudo service wavefront-proxy status
Wavefront Proxy is running (PID 3731)

ログは次のコマンドで確認できます。

tail -f /var/log/wavefront/wavefront.log
2024-06-04 17:32:18,500 INFO  [proxy:main] Wavefront Proxy version 13.5 (pkg:jar), runtime: OpenJDK Runtime Environment (BellSoft) 11.0.23
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.
SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions prior to 1.8.
SLF4J: Ignoring binding found at [jar:file:/opt/wavefront/wavefront-proxy/bin/wavefront-proxy.jar!/BOOT-INF/lib/log4j-slf4j-impl-2.23.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#ignoredBindings for an explanation.
2024-06-04 17:32:18,629 INFO  [Utils:detectLocalHostName] Hostname: 'wf-proxy' (detected using 'hostname' command)
2024-06-04 17:32:18,830 INFO  [proxy:start] Wavefront Proxy version 13.5 (pkg:jar), runtime: OpenJDK Runtime Environment (BellSoft) 11.0.23
2024-06-04 17:32:18,832 INFO  [proxy:start] OS Max File Descriptors: 1048576
2024-06-04 17:32:20,008 INFO  [ProxyConfig:parseArguments] modifyByArgs: pushConfigFile
2024-06-04 17:32:20,072 INFO  [ProxyConfig:parseArguments] modifyByFile: server, pushListenerPorts, otlpHttpListenerPorts, proxyname, otlpGrpcListenerPorts, token
2024-06-04 17:32:20,080 INFO  [ProxyConfig:constructTenantInfoObject] Wavefront api token for further authentication. For the server https://vmware.wavefront.com/api
2024-06-04 17:32:20,093 INFO  [ProxyConfig:parseArguments] Unparsed arguments: 
2024-06-04 17:32:20,094 INFO  [ProxyConfig:parseArguments] Using proxyname:'wf-proxy' hostname:'wf-proxy'
2024-06-04 17:32:20,103 INFO  [ProxyConfig:parseArguments] Config: (* command line argument)
2024-06-04 17:32:20,104 INFO  [ProxyConfig:parseArguments] 	* pushConfigFile = /etc/wavefront/wavefront-proxy/wavefront.conf
2024-06-04 17:32:20,104 INFO  [ProxyConfig:parseArguments] 	  server = https://vmware.wavefront.com/api
2024-06-04 17:32:20,104 INFO  [ProxyConfig:parseArguments] 	  pushListenerPorts = 2878
2024-06-04 17:32:20,105 INFO  [ProxyConfig:parseArguments] 	  otlpHttpListenerPorts = 4318
2024-06-04 17:32:20,105 INFO  [ProxyConfig:parseArguments] 	  proxyname = wf-proxy
2024-06-04 17:32:20,105 INFO  [ProxyConfig:parseArguments] 	  otlpGrpcListenerPorts = 4317
2024-06-04 17:32:20,105 INFO  [ProxyConfig:parseArguments] 	  token = ******
2024-06-04 17:32:20,189 INFO  [proxy:getOrCreateProxyId] Ephemeral proxy id created: 300fcde5-6d59-467c-b227-5a4b17f01ed3
2024-06-04 17:32:22,284 INFO  [proxy:checkin] Checking in tenants: https://vmware.wavefront.com/api
2024-06-04 17:32:24,290 INFO  [proxy:<init>] initial configuration is available, setting up proxy
2024-06-04 17:32:24,299 INFO  [proxy:processConfiguration] Proxy trace span sampling rate set to 0.05
2024-06-04 17:32:24,449 INFO  [proxy:scheduleCheckins] scheduling regular check-ins
2024-06-04 17:32:24,923 INFO  [ProxySendConfigScheduler:lambda$new$0] Configuration sent to the server successfully.
2024-06-04 17:32:26,002 INFO  [proxy:lambda$startListeners$8] listening on port: 2878 for Wavefront metrics
2024-06-04 17:32:26,086 INFO  [proxy:startOtlpGrpcListener] listening on port: 4317 for OTLP data over gRPC
2024-06-04 17:32:27,834 INFO  [proxy:startOtlpHttpListener] listening on port: 4318 for OTLP data over HTTP
2024-06-04 17:32:32,869 INFO  [proxy:run] setup complete
...

次のコマンドでWavefrontのSaaS側にProxyが登録されているかチェックできます。

curl -s -H "Authorization: Bearer ${WAVEFRONT_TOKEN}" "${WAVEFRONT_URL}/v2/proxy?offset=0&limit=100" | jq '.response.items | map(select(.hostname == "wf-proxy" and .status == "ACTIVE"))'

Wavefront Proxy自体のメトリクスは"Operations for Applications Service and Proxy Data"ダッシュボード (https://<tenant_id>.wavefront.com/dashboards/integration-system) で確認できます。

"Filter"にsource=wf-proxyを入力して絞ります。

image image

テストデータを送信してみます。

$ curl -sv http://localhost:2878 -X POST -d "test.metric 100 source=test.source"
> POST / HTTP/1.1
> Host: localhost:2878
> User-Agent: curl/7.61.1
> Accept: */*
> Content-Length: 34
> Content-Type: application/x-www-form-urlencoded
> 
< HTTP/1.1 202 Accepted
< content-type: text/plain
< content-length: 0
< connection: keep-alive
< 

SaaS側でデータが受信できていることをダッシュボードから確認できます。

image

"Browse" -> "Metrics"から送信したメトリクスを確認します。"Metrics"にtest.metricsを入力してフィルタリングします。

image image

Telegrafのインストール

Wavefront Proxyにメトリクスを送信するAgentとして、Telegrafをインストールします。
今回はWavefront Proxyと同じ環境にTelegrafをインストールします。

https://docs.wavefront.com/proxies_manual_install.html#installing-telegraf-manually を参考にyumでtelegrafをインストールします。

curl -s https://packagecloud.io/install/repositories/wavefront/telegraf/script.rpm.sh | sudo bash
sudo yum install telegraf -y

Wavefront Proxy向けのoutput pluginを使用します。
https://github.com/influxdata/telegraf/blob/master/plugins/outputs/wavefront/README.md

cat <<EOF | sudo tee -a /etc/telegraf/telegraf.d/10-wavefront.conf
[[outputs.wavefront]]
  url = "http://localhost:2878"
  metric_separator = "."
  source_override = ["proxyname", "agent_host", "node_host"]
  convert_paths = true
EOF

Wavefront Proxyとは別の環境にインストールする場合はlocalhostの代わりにWavefront ProxyのIPまたはホスト名を使用してください。

telegrafを起動します。

sudo service telegraf start

ログは次のコマンドで確認できます。

$ journalctl -u telegraf
-- Logs begin at Tue 2024-06-04 16:32:31 JST, end at Wed 2024-06-05 00:53:00 JST. --
 6月 05 00:52:51 wf-proxy systemd[1]: Starting Telegraf...
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Loading config: /etc/telegraf/telegraf.conf
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Loading config: /etc/telegraf/telegraf.d/10-wavefront.conf
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Starting Telegraf 1.28.2 brought to you by InfluxData the makers of InfluxDB
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Available plugins: 240 inputs, 9 aggregators, 29 processors, 24 parsers, 59 outputs, 5 secret-stores
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Loaded inputs: cpu disk diskio kernel mem processes swap system
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Loaded aggregators:
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Loaded processors:
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Loaded secretstores:
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Loaded outputs: wavefront
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! Tags enabled: host=wf-proxy
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"wf-proxy", Flush Interval:10s
 6月 05 00:52:52 wf-proxy systemd[1]: Started Telegraf.
 6月 05 00:52:52 wf-proxy telegraf[7751]: 2024-06-04T15:52:52Z I! The Wavefront SDK will communicate with a Wavefront Proxy.
 6月 05 00:53:00 wf-proxy telegraf[7751]: 2024-06-04T15:53:00Z I! [inputs.processes] Unknown state "0" in file "/proc/7751/stat"

"Linux Host"ダッシュボード (https://<tenant_id>.wavefront.com/dashboards/integration-linux-host) でTelegrafがインストールされたHostのメトリクスを確認できます。

image
Found a mistake? Update the entry.