Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save 6uimorais/1e1de20bbbb2a04fe19fc73f88d6a25f to your computer and use it in GitHub Desktop.
Save 6uimorais/1e1de20bbbb2a04fe19fc73f88d6a25f to your computer and use it in GitHub Desktop.
Self Hosted Kadira APM - Docker Compose - Ubuntu

1 - Get an Ubuntu machine up and running (make sure ports 11011 and 4000 are open)

2 - Install docker + docker-compose (full_install_docker_compose.sh)

3 - Get a docker-compose.yml with mongodb, kadira-ui, kadira-engine and kadira-rma (docker-compose.yml)

3 - Run "sudo docker-compose up" (-d if you want it running on background)

4 - Access http://machineIp:4000 and login as "[email protected]" and "admin" password

5 - Create your APP, get the ID and Secret

6 - Setup kadira in your app by code or settings.json (Config)

7 - Update your app from "free" plan to "paid" to get full access at Kadira (Update App Plan)

8 - Enjoy!

Install MongoDB client if not already

$ sudo apt install mongodb-clients

Access MongoDB (make sure port 27018 is accessible)

$ mongo apm --host michineIP --port 27018

Execute update command (free, paid, startup, business, pro)

>  db.apps.update({},{$set:{plan:'pro'}},{multi:true})

Done!

Add Kadira package to your project

$ meteor add meteorhacks:kadira

Config Kadira in your code or settings.json

# code
Kadira.connect('xxxxxxxxxxx', 'xxxxxxxxxxxxxxx', {"endpoint":"http://machineIp:11011"});

#settings.json    
{  
  "kadira": {
    "appId": "xxxxxxxxxxx",
    "appSecret": "xxxxxxxxxxxxxxx",
    "options": {
        "endpoint":"http://machineIp:11011"
    }
  } 
}

You can find more advanced options here:

Link

# Source: https://github.com/mdemri/kadira-docker-compose/blob/bece9ca502f0770ce9af7abda729d081b5147368/docker-compose.yml
version: '2'
services:
kadira-engine:
image: vladgolubev/kadira-engine
environment:
- MONGO_URL=mongodb://mongodb/apm
- MONGO_SHARD_URL_one=mongodb://mongodb/apm
- PORT=11011
ports:
- "11011:11011"
restart: always
depends_on:
- mongodb
kadira-rma:
image: dkoo761/kadira-rma
environment:
- MONGO_URL=mongodb://mongodb/apm
restart: always
depends_on:
- mongodb
kadira-ui:
image: vladgolubev/kadira-ui
environment:
- MONGO_URL=mongodb://mongodb/apm
- MONGO_SHARD_URL_one=mongodb://mongodb/apm
ports:
- "4000:4000"
restart: always
depends_on:
- mongodb
mongodb:
image: mongo
ports:
- "27018:27017"
restart: always
# Source: https://gist.github.com/wdullaer/f1af16bd7e970389bad3
sudo true
wget -qO- https://get.docker.com/ | sh
COMPOSE_VERSION=`git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | tail -n 1`
sudo sh -c "curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"
sudo chmod +x /usr/local/bin/docker-compose
sudo sh -c "curl -L https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose"
cd /tmp
git clone https://gist.github.com/76b450a0c986e576e98b.git
cd 76b450a0c986e576e98b
sudo mv docker-cleanup /usr/local/bin/docker-cleanup
sudo chmod +x /usr/local/bin/docker-cleanup
@crapthings
Copy link

its working after add self to docker group

sudo usermod -aG docker ${USER}
and login back

@crapthings
Copy link

crapthings commented Nov 30, 2017

do we have to clean old aggreation data by manually? will it getting slow after month?

this is another approach that i've used old days, but its getting slow day by day. then down. i had to stop mongo rs mode and drop db and oplog collection.

https://medium.com/@foodfitnesscode/setting-up-kadira-on-a-ubuntu-16-04-server-part-1-a821cdddd1e6

@luis-alvarez
Copy link

luis-alvarez commented Apr 4, 2018

Mongodb image needs to be mongo:3.4, otherwise it will pull the latest version of mongo (3.6), which is not compatible with this setup.
Thank you very much for sharing this!

@tdnm
Copy link

tdnm commented May 18, 2018

Hello everyone,
I got it running. however, I could not see the data.
I used 'settings.json' option at the root of my project

{
"kadira": {
"appId": "HdSwWdDJfzXn*****",
"appSecret": "c9efac10-5e7c-4ee0-9b3e-*****",
"options": {
"endpoint":"http://192.168.1.105:11011"
}
}
}

My app said: [ Kadira: completed instrumenting the app]

on Kadira web: localhost:4000, still showing "Configure Your App" page, the expected data not showing.

whats wrong?
Thanks a lot!

@thumptech
Copy link

I got it working and connecting, but all the charts just show "Loading ..." in red and never get anywhere. Any suggestions?

image

@AshHimself
Copy link

@thumptech did you resolve your issue?

@thumptech
Copy link

@thumptech did you resolve your issue?

Tried on another two machines and still have the same problem unfortunately.

@promentol
Copy link

Use mongodb 3.4 for this Kadira setup, this will resolve a lot of problems.
If someone is experiencing problem, just edit docker-compose.yml, and rerun docker-compose up -d

mongodb:
    image: mongo:3.4
    ports:
    - "27018:27017"
    restart: always

@promentol
Copy link

Also if you want to change password, connect to mongodb, open users collection, and change services.password.bcrypt field directly. You can use online tools like https://bcrypt-generator.com to hash your password first, before editing services.password.bcrypt field directly.

@davinderkumar
Copy link

I have noticed that Kadira's mongo process is causing very high CPU usage even when meteor app is idle.
Meteor's mongo process is consuming less than 1% of cpu.
Kadira's mongo version is 3.4.9, and Meteor's mongo is 3.4.1.

@davinderkumar
Copy link

I noticed that it was because my apm collection size was 10GB and as there are no indexes configured so it was causing lot of CPU usage.
After creating indexes it is better now. I will cleanup the old data as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment