Skip to content

Commit d6004dc

Browse files
samoht9277JuArce
andauthored
Telemetry ansible (#1428)
Co-authored-by: JuArce <[email protected]>
1 parent 4dc0c96 commit d6004dc

32 files changed

+1533
-117
lines changed

Makefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1268,6 +1268,15 @@ ansible_operator_deploy: ## Deploy the Operator. Parameters: INVENTORY
12681268
-e "ecdsa_keystore_path=$(ECDSA_KEYSTORE)" \
12691269
-e "bls_keystore_path=$(BLS_KEYSTORE)"
12701270

1271+
ansible_telemetry_create_env:
1272+
@cp -n infra/ansible/playbooks/ini/config-telemetry.ini.example infra/ansible/playbooks/ini/config-telemetry.ini
1273+
@echo "Config files for Telemetry created in infra/ansible/playbooks/ini"
1274+
@echo "Please complete the values and run make ansible_telemetry_deploy"
1275+
1276+
ansible_telemetry_deploy:
1277+
@ansible-playbook infra/ansible/playbooks/telemetry.yaml \
1278+
-i $(INVENTORY)
1279+
12711280
__ETHEREUM_PACKAGE__: ## ____
12721281

12731282
ethereum_package_start: ## Starts the ethereum_package environment

infra/ansible/README.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ This will create the following file in `infra/ansible/playbooks/ini`:
137137
```shell
138138
make ansible_aggregator_create_env
139139
```
140-
141140
- `config-aggregator.ini`
142141

143142
The `config-aggregator.ini` contains the variables to run the Operator in Aligned:
@@ -166,6 +165,49 @@ make ansible_aggregator_deploy INVENTORY=</path/to/inventory> ECDSA_KEYSTORE=<pa
166165
> [!Note]
167166
> ECDSA_KEYSTORE and BLS_KEYSTORE are the paths of the keystores in your machine.
168167
168+
## Telemetry
169+
To deploy the Telemetry Services you need to set some variables and then run the Telemetry playbook
170+
171+
This will create the following file in `infra/ansible/playbooks/ini`:
172+
173+
```shell
174+
make ansible_telemetry_create_env
175+
```
176+
177+
- `config-telemetry.ini`
178+
179+
The `config-telemetry.ini` contains the variables to run the Telemetry in Aligned:
180+
181+
| Variable | Description | Testnet | Stage | Mainnet
182+
|-------------------------------|---------------------------------------------------|-----------------------------------------------|----------------------------------------------------|------------------------------------|
183+
| grafana_admin_password | Password for Grafana's admin user | <your_grafana_admin_password> | <your_grafana_admin_password> | <your_grafana_admin_password>
184+
| grafana_prometheus_datasource | Prometheus location for Grafana to pull data from | localhost | localhost | localhost
185+
| grafana_domain | Public URL for Grafana Metrics | `holesky.metrics.alignedlayer.com` | `stage1.metrics.alignedlayer.com` | `mainnet.metrics.alignedlayer.com`
186+
| grafana_oath_client_id | Generic OAuth Client ID | <your_oauth_client_id> | <your_oauth_client_id> | <your_oauth_client_id>
187+
| grafana_oath_client_secret | Generic OAuth Client Secret | <your_oauth_client_secret> | <your_oauth_client_secret> | <your_oauth_client_secret>
188+
| grafana_oath_auth_url | Generic OAuth Auth URL | <your_oauth_auth_url> | <your_oauth_auth_url> | <your_oauth_auth_url>
189+
| grafana_oath_token_url | Generic OAuth Token URL | <your_oauth_token_url> | <your_oauth_token_url> | <your_oauth_token_url>
190+
| grafana_oath_api_url | Generic OAuth API URL (User Info) | <your_oauth_api_url> | <your_oauth_api_url> | <your_oauth_api_url>
191+
| prometheus_aggregator_ip | Aggregator IP+PORT location for prometheus | aligned-holesky-aggregator:9091 | aligned-holesky-stage-1-aggregator:9091 | aligned-mainnet-aggregator:9091
192+
| prometheus_operator_ip | Operators IP+PORT location for prometheus | aligned-holesky-operator-1:9092 | aligned-holesky-stage-1-operator-1:9092 | aligned-mainnet-operator-1:9092
193+
| prometheus_batcher_ip | Batcher IP+PORT location for prometheus | aligned-holesky-batcher:9093 | aligned-holesky-stage-1-batcher-1:9093 | aligned-mainnet-batcher:9093
194+
| prometheus_tracker_ip | Tracker IP+PORT location for prometheus | aligned-holesky-tracker:4001 | aligned-holesky-stage-1-tracker:4001 | aligned-mainnet-telemetry:4001
195+
| postgresql_telemetry_db_name | Postgres Database Name | <your_postgres_db_name> | <your_postgres_db_name> | <your_postgres_db_name>
196+
| postgresql_telemetry_user | Postgres Username | <your_postgres_db_username> | <your_postgres_db_username> | <your_postgres_db_username>
197+
| postgresql_telemetry_pass | Postgres Username's Password | <your_postgres_db_password> | <your_postgres_db_password> | <your_postgres_db_password>
198+
| cassandra_telemetry_user | Cassandra Username | <your_cassandra_db_name> | <your_cassandra_db_name> | <your_cassandra_db_name>
199+
| cassandra_telemetry_pass | Cassandra Username's Password | <your_cassandra_db_password> | <your_cassandra_db_password> | <your_cassandra_db_password>
200+
| telemetry_aligned_rpc | HTTP ETH RPC URL | `https://aligned-rpc-node-2.tail665ae.ts.net` | `https://aligned-rpc-node-2.tail665ae.ts.net` | `https://aligned-mainnet-rpc-1.tail665ae.ts.net`
201+
| telemetry_api_phx_host | Telemetry API Elixir's Phoenix host for | `holesky.telemetry.alignedlayer.com` | `stage1.telemetry.alignedlayer.com` | `mainnet.metrics.alignedlayer.com`
202+
| telemetry_api_elixir_hostname | Telemetry API Server's Hostname | `aligned-holesky-metrics` | `aligned-holesky-stage-1-telemetry` | `aligned-mainnet-telemetry`
203+
| telemetry_api_secret_key_base | Telemetry API Secret Key Base | <your_secret_key_base> | <your_secret_key_base> | <your_secret_key_base>
204+
| pagerduty_routing_key | Pagerduty Routing Key | <your_pagerduty_routing_key> | <your_pagerduty_routing_key> | <your_pagerduty_routing_key>
205+
206+
Deploy the Telemetry Services:
207+
208+
```shell
209+
make ansible_telemetry_deploy INVENTORY=</path/to/inventory>
210+
169211
# How to Create Keystores
170212

171213
## Create ECDSA Keystore
@@ -266,3 +308,4 @@ Public Key: E([...,...])
266308

267309
Refer to this link for more details about keystore creation https://docs.eigenlayer.xyz/eigenlayer/operator-guides/operator-installation#create-keys
268310

311+

infra/ansible/aggregator.yaml

Lines changed: 0 additions & 61 deletions
This file was deleted.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
- name: Install Alert Manager
2+
hosts: "{{ host }}"
3+
4+
tasks:
5+
- name: Install Alert Manager
6+
get_url:
7+
url: https://github.com/prometheus/alertmanager/releases/download/v{{ alert_manager_version }}/alertmanager-{{ alert_manager_version }}.linux-amd64.tar.gz
8+
dest: /tmp/alert_manager-{{ alert_manager_version }}-linux-amd64.tar.gz
9+
mode: '0644'
10+
11+
- name: Install Alert Manager package
12+
become: true
13+
unarchive:
14+
src: "/tmp/alert_manager-{{ alert_manager_version }}-linux-amd64.tar.gz"
15+
dest: "/usr/local/bin/"
16+
remote_src: yes
17+
extra_opts:
18+
- --strip-components=1
19+
vars:
20+
ansible_ssh_user: "{{ admin_user }}"
21+
22+
- name: Clean up Alert Manager tarball package
23+
file:
24+
path: /tmp/alert_manager-{{ alert_manager_version }}-linux-amd64.tar.gz
25+
state: absent
26+
27+
- name: Make sure /etc/alertmanager directory exists
28+
become: true
29+
file:
30+
path: /etc/alertmanager
31+
state: directory
32+
vars:
33+
ansible_ssh_user: "{{ admin_user }}"
34+
35+
- name: Create Alert Manager config file
36+
become: true
37+
template:
38+
src: alert_manager/alertmanager.yml.j2
39+
dest: /etc/alertmanager/alertmanager.yml
40+
vars:
41+
ansible_ssh_user: "{{ admin_user }}"
42+
pagerduty_routing_key: "{{ lookup('ini', 'pagerduty_routing_key', file=ini_file) }}"
43+
44+
- name: Create Alert Manager systemd service
45+
become: true
46+
template:
47+
src: services/alert_manager.service.j2
48+
dest: /etc/systemd/system/alert_manager.service
49+
vars:
50+
ansible_ssh_user: "{{ admin_user }}"
51+
52+
- name: Start Alert Manager
53+
become: true
54+
systemd_service:
55+
name: alert_manager
56+
state: started
57+
daemon_reload: true
58+
enabled: true
59+
vars:
60+
ansible_ssh_user: "{{ admin_user }}"
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
- name: Cassandra Setup
2+
hosts: "{{ host }}"
3+
become: true
4+
vars:
5+
ansible_ssh_user: "{{ admin_user }}"
6+
7+
tasks:
8+
- name: Check if cassandra is installed
9+
stat:
10+
path: /opt/cassandra/bin/cassandra
11+
register: cassandra_exists
12+
13+
- name: Install java
14+
apt:
15+
pkg: openjdk-17-jre
16+
17+
- name: Create cassandra group
18+
group:
19+
name: cassandra
20+
system: yes
21+
22+
- name: Create cassandra user
23+
user:
24+
name: cassandra
25+
group: cassandra
26+
shell: /sbin/nologin
27+
system: yes
28+
29+
- name: Download cassandra
30+
when: not cassandra_exists.stat.exists
31+
get_url:
32+
url: "https://dlcdn.apache.org/cassandra/{{ cassandra_version }}/apache-cassandra-{{ cassandra_version }}-bin.tar.gz "
33+
dest: "/tmp/cassandra-{{ cassandra_version }}.tar.gz"
34+
mode: '0644'
35+
36+
- name: Ensure /opt/cassandra directory exists
37+
file:
38+
path: /opt/cassandra
39+
owner: "cassandra"
40+
group: "cassandra"
41+
state: directory
42+
43+
- name: Extract cassandra
44+
when: not cassandra_exists.stat.exists
45+
unarchive:
46+
src: "/tmp/cassandra-{{ cassandra_version }}.tar.gz"
47+
dest: /opt/cassandra/
48+
remote_src: yes
49+
owner: "cassandra"
50+
group: "cassandra"
51+
extra_opts:
52+
- --strip-components=1
53+
54+
- name: Add /opt/cassandra/bin to PATH
55+
lineinfile:
56+
path: /home/{{ ansible_user }}/.bashrc
57+
line: PATH=/opt/cassandra/bin:$PATH
58+
state: present
59+
60+
- name: Create Cassandra systemd service
61+
template:
62+
src: services/cassandra.service.j2
63+
dest: /etc/systemd/system/cassandra.service
64+
vars:
65+
cassandra_telemetry_user: "{{ lookup('ini', 'cassandra_telemetry_user', file=ini_file) }}"
66+
cassandra_telemetry_pass: "{{ lookup('ini', 'cassandra_telemetry_pass', file=ini_file) }}"
67+
68+
- name: Start Cassandra
69+
systemd_service:
70+
name: cassandra
71+
state: started
72+
daemon_reload: true
73+
enabled: true

0 commit comments

Comments
 (0)