c# - Usando StatsD de Etsy en un entorno de Windows
.net graphite (7)
¿Qué necesitaré para usar las Statsd de Etsy en un entorno Windows? Mis intenciones son crear un cliente .net para usar Statsd.
Hay bastantes implementaciones de cliente StatsD de código abierto disponibles en diferentes lenguajes, incluido C # .NET. Etsy proporciona uno en sus examples github, también echa un vistazo a la versión statsd_clients de statsd_clients .
Hemos reconstruido Graphite / StatsD en .NET puro. Actualmente se está utilizando en el entorno de producción, procesando alrededor de 600M puntos de datos diarios.
Las versiones actuales de statsd y nodejs le permiten ejecutar statsd en Windows sin modificaciones. El archivo statsd package.json ya contiene scripts para instalarlo y desinstalarlo como servicio de Windows.
El procedimiento de instalación sería:
- Instalar nodejs para Windows
- Crear un directorio como C: / StatsD
- Abra una ventana de consola y haga
cd /StatsD
- Luego haga
npm install https://github.com/etsy/statsd.git
- En el directorio
node_modules/statsd
crea tu propiaconfig.json
- En la ventana de la consola, haga
cd node_modules/statsd
ynpm run-script install-windows-service
Sin embargo, Graphite solo se ejecuta en Linux.
Necesitas un servidor statsd para conectarte.
También necesita una biblioteca cliente para conectarse a ella, por ejemplo, esta y su paquete nuget .
Su mejor apuesta es tener un servidor Linux con statsd y Graphite instalado. Entonces solo tendría que escribir algún código C # para realizar la llamada UDP para obtener la métrica en el sistema.
[ACTUALIZACIÓN (6/23/2014): Me encontré con un clon de statsd / Graphite llamado statsd.net que parece prometedor, pero en gran parte carece del lado Graphite de la ecuación. Todavía creo que la mejor opción es usar los proyectos de statsd / Graphite reales, ya que cualquier clon es necesario para ponerse al día.]
TL; DR:
- statsd.net es un clon de statsd escalable con muchos extras interesantes, y diseñado para entornos centrados en Windows. El primer lanzamiento de producción es el 29 de mayo de 2013.
- statsd-csharp-client es un statsd-csharp-client liviano de statsd y statsd.net, disponible para .net 3.5, 4.0 y 4.5 a través de nuget.
Revelación completa: soy el autor de estos dos proyectos y los escribí porque no podía llevar el servicio statsd de etsy a la producción; mi organización no está lista para implementar y admitir servicios basados en nodejs.
Tuve el mismo problema en mi organización: somos un entorno centrado en Windows que quiere recopilar estadísticas de todo el mundo en un único repositorio de grafito. Inicialmente había pensado en utilizar las estadísticas de etsy, pero mi empresa aún no está lista para rodar con los servicios de nodejs en producción. En el camino, descubrí que tener mi propio servicio de agregación significaba que podía hacer muchas cosas interesantes, como agregar soporte de memcached para escalabilidad, agregar agregadores nuevos, etc.
El servicio se puede usar en modo consola en este momento y estará listo para el uso en producción a partir del 29 de mayo de 2013 en adelante.
Tengo statsd + graphite corriendo en mi entorno de Windows usando el NStatsD cliente C #.
Aquí están mis notas para obtener la configuración de Linux VM:
Nota: Sé que Linux es suficiente para ser peligroso, pero por lo demás soy un novato y podría estar haciendo algo inconscientemente horrible.
- Instalar Ubuntu Server 12.04. Utilicé VirtualBox para dev y luego EC2 para prod.
Descargar graphite-fabric a su carpeta de inicio. Este es un script que descargará, compilará e instalará graphite y statsd. Espera una caja limpia y utiliza nginx para el servidor web.
sudo apt-get install git
git clone git://github.com/gingerlime/graphite-fabric.git
cd graphite-fabric/
Instalar prereq''s para tela
sudo apt-get install python-setuptools
Los siguientes pasos son una descarga, compilación e instalación que puede llevar algún tiempo. Vale la pena establecer un modo de mantener vivo en cualquier sesión de putty ssh antes de continuar.
Ahora instale según las instrucciones de gingerlime en README.md, incluida la sección de requisitos.
- Instale statsd según las instrucciones de gingerlime.
- Reiniciar
- Ejecute
netstat -nulp
y observe que 8125 está en uso para confirmar que statsd está escuchando. - Check carbon se está ejecutando
tail /opt/graphite/storage/log/carbon-cache/carbon-cache-a/listener.log
. Si no es así, intentesudo /etc/init.d/carbon start
Ahora que tiene su servidor en ejecución, intente lanzarle algunos contadores con el cliente NStatsD .
Arreglo de zona horaria :
Esto arreglará el grafito para graficar los tiempos en tu zona local
-
cd /opt/graphite/webapp/graphite
-
sudo cp local_settings.py.example local_settings.py
-
sudo chown www-data:www-data local_settings.py
(verifique conls -l
que los permisos se vean bien) -
sudo pico local_settings.py
Establezca TIME_ZONE en algo comoAustralia/Sydney
. Descubra qué zonas horarias puede usar en/usr/share/zoneinfo/
- Guarde y reinicie la caja (no está seguro de cómo hacer que recoja el cambio sin reiniciar)
Notas EC2
La raíz está deshabilitada en EC2. Fabric solicita una contraseña de root que no tienes. Use el argumento -i keyfile
con fab para darle su ssh keyfile en su lugar.
Notas de VirtualBox
VBoxVMService fue útil para ejecutar automáticamente la VM como un servicio en mi entorno de desarrollo de Windows.